/**
 * Created with IntelliJ IDEA.
 * Description:
 * user:likai
 * Date:2022-10-16
 * Time:11:13
 */



public class Test {
//找到环的入口地方
public  ListNode getIntersectionNode(ListNode head) {
    ListNode fast=head.next.next;
    ListNode slow=head.next;
    while(fast!=null&&fast.next!=null){
        while(fast==slow){
            fast=fast.next.next;
            slow=slow.next;
        }
        slow=head;
        while(fast!=slow){
            fast=fast.next;
            slow=slow.next;
        }
        return slow;
    }
    return null;
}






    //判断是不是有环
//        public boolean hasCycle(ListNode head) {
//            ListNode fast=head;
//            ListNode slow=head;
//
//            while(fast!=null&&fast.next!=null){
//
//                slow=slow.next;
//                fast=fast.next.next;
//                if(fast==slow){
//                    return true;
//                }
//            }
//            return false;
//        }



    //判断是不是回文
//    public static boolean chkPalindrome(ListNode A) {
//        // write code here
//        //找到中间，
//        ListNode fast=A;
//        ListNode slow=A;
//        while(fast.next!=null&&fast.next.next!=null){
//            fast=fast.next.next;
//            slow=slow.next;
//        }
//        ListNode isSlow=slow;
//        //逆置后半部分
//        ListNode cur=slow.next;
//        ListNode curnext=cur.next;
//        if(fast.next!=null){
//            //是偶数
//            while(curnext!=null){
//                slow=cur;
//                cur=curnext;
//                curnext=curnext.next;
//                cur.next=slow;
//            }
//            while(A.next!=isSlow){
//                if(A.val!=cur.val){
//                    return false;
//                }
//                A=A.next;
//                cur=cur.next;
//            }
//            if(A.val== cur.val){
//                return true;
//            }else {
//                return false;
//            }
//        }else {
//            //奇数
//            while(curnext!=null){
//                cur.next=slow;
//                slow=cur;
//                cur=curnext;
//                curnext=curnext.next;
//            }
//            cur.next=slow;
//            while (A!=cur){
//                if(A.val!=cur.val){
//                    return false;
//                }
//                A=A.next;
//                cur=cur.next;
//            }
//            return true;
//        }
//    }


    //找交点
//        public static int size(ListNode A){
//            ListNode cura=A;
//            int sum=0;
//            while(cura!=null){
//                cura=cura.next;
//                sum++;
//            }
//            return  sum;
//        }
//        public static ListNode getIntersectionNode(ListNode headA, ListNode headB) {
//            ListNode cura=headA;
//            ListNode curb=headB;
//            int a=size(headA);
//            int b=size(headB);
//            if(a>b){
//                for (int i = 0; i < a-b; i++) {
//                    cura=cura.next;
//                }
//                while(cura!=null){
//                    if(cura==curb){
//                        return cura;
//                    }
//                    cura=cura.next;
//                    curb=curb.next;
//                }
//                return null;
//            }else {
//                for (int i = 0; i < a-b; i++) {
//                    curb=curb.next;
//                }
//                while(cura!=null){
//                    if(cura==curb){
//                        return cura;
//                    }
//                    cura=cura.next;
//                    curb=curb.next;
//                }
//                return null;
//            }



    //第二个
//            ListNode cura=headA;
//            ListNode curb=headB;
//            int a=size(headA);
//            int b=size(headB);
//            if(a>b){
//                for (int i = 0; i < a-b; i++) {
//                    if(cura.val==curb.val){
//                        return curb;
//                    }
//                    cura=cura.next;
//                }
//                return null;
//            }else {
//                for (int i = 0; i < b-a; i++) {
//                    if(cura.val==curb.val){
//                        return cura;
//                    }
//                    curb=curb.next;
//                }
//                return null;
//            }
//        }



//    public static void main(String[] args) {
//        ListNode listNode1=new ListNode(4);
//        ListNode listNode2=new ListNode(1);
//        ListNode listNode3=new ListNode(8);
//        ListNode listNode4=new ListNode(4);
//        ListNode listNode5=new ListNode(5);
//        listNode1.next=listNode2;
//        listNode2.next=listNode3;
//        listNode3.next=listNode4;
//        listNode4.next=listNode5;
//        ListNode listNode6=new ListNode(8);
//        ListNode listnode=getIntersectionNode(listNode1,listNode6);
//        System.out.println(listnode);
//        //System.out.println(chkPalindrome(listNode1));
//    }
}


